package com.project.domain.entity.zxProject;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("项目立项--纵向项目基础信息")
public class BizZxProject {

    private static final long serialVersionUID = 1L;

    /** 主键ID */
//    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    /** 项目编号 */
    @Excel(name = "项目编号")
    @ApiModelProperty("项目编号")
    private String code;

    /** 项目名称 */
    @Excel(name = "项目名称")
    @ApiModelProperty("项目编号")
    private String name;

    /** 所属单位ID-外键(biz_unit) */
    @ApiModelProperty("项目编号")
    private String unitId;

    /** 所属系部 */
    @Excel(name = "所属系部")
    @ApiModelProperty("所属系部")
    private String divisionId;

    /** 项目级别 */
    @Excel(name = "项目级别")
    @ApiModelProperty("项目级别")
    private String projectLevelId;

    /** 保密级别 */
    @Excel(name = "保密级别")
    @ApiModelProperty("保密级别")
    private String secretLevelId;

    /** 立项日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
    @Excel(name = "立项日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("立项日期")
    private String authorizeDate;

    /** 开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
    @Excel(name = "开始日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:dd")
    @ApiModelProperty("开始日期")
    private String beginDate;

    /** 计划结项日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
    @Excel(name = "计划结项日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("计划结项日期")
    private String planEndDate;

    /** 结项日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
    @Excel(name = "结项日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("结项日期")
    private String actualEndDate;

    /** 项目状态 */
    @Excel(name = "项目状态")
    @ApiModelProperty("项目状态")
    private String projectStatusId;

    /** 批准号 */
    @Excel(name = "批准号")
    @ApiModelProperty("批准号")
    private String authorizeCode;

    /** 成果形式 */
    @Excel(name = "成果形式")
    @ApiModelProperty("成果形式")
    private String productMode;

    /** 项目来源单位 */
    @Excel(name = "项目来源单位")
    @ApiModelProperty("项目来源单位")
    private String projectTier;

    /** 负责人类型 */
    @Excel(name = "负责人类型")
    @ApiModelProperty("负责人类型")
    private String chargerType;

    /** 负责人编号 */
    @Excel(name = "负责人编号")
    @ApiModelProperty("负责人编号")
    private String chargerCode;

    /** 负责人 */
    @Excel(name = "负责人")
    @ApiModelProperty("负责人")
    private String chargerName;

    /** 项目分类 */
    @Excel(name = "项目分类")
    @ApiModelProperty("项目分类")
    private String projectTypeCode;

    /** 主课题编号 */
    @Excel(name = "主课题编号")
    @ApiModelProperty("主课题编号")
    private String upProjectId;

    /** 外拨经费 */
    @Excel(name = "外拨经费")
    @ApiModelProperty("外拨经费")
    private String outFee;

    /** 主课题名称 */
    @Excel(name = "主课题名称")
    @ApiModelProperty("主课题名称")
    private String upProjectName;

    /** 项目总经费 */
    @Excel(name = "项目总经费")
    @ApiModelProperty("项目总经费")
    private String feeAuthorize;

    /** 拨款经费 */
    @Excel(name = "拨款经费")
    @ApiModelProperty("拨款经费")
    private String selfProvideFee;

    /** 学校资助经费 */
    @Excel(name = "学校资助经费")
    @ApiModelProperty("学校资助经费")
    private String attachFee;

    /** 经费卡号 */
    @Excel(name = "经费卡号")
    @ApiModelProperty("经费卡号")
    private String feeCode;

    /** 统计归属 */
    @Excel(name = "统计归属")
    @ApiModelProperty("统计归属")
    private String subjectClassId;

    /** 一级学科 */
    @Excel(name = "一级学科")
    @ApiModelProperty("一级学科")
    private String subjectId;

    /** 研究类别 */
    @Excel(name = "研究类别")
    @ApiModelProperty("研究类别")
    private String researchClassId;

    /** 国民经济行业 */
    @Excel(name = "国民经济行业")
    @ApiModelProperty("国民经济行业")
    private String gmjjhy;

    /** 合作形式 */
    @Excel(name = "合作形式")
    @ApiModelProperty("合作形式")
    private String cooperateId;

    /** 组织形式 */
    @Excel(name = "组织形式")
    @ApiModelProperty("组织形式")
    private String formId;

    /** 项目来源 */
    @Excel(name = "项目来源")
    @ApiModelProperty("项目来源")
    private String projectSourceId;

    /** 备注 */
    @Excel(name = "备注")
    @ApiModelProperty("备注")
    private String note;

    /** 备用字段1 */
    @Excel(name = "备用字段1")
    @ApiModelProperty("备用字段1")
    private String standby1;

    /** 备用字段2 */
    @Excel(name = "备用字段2")
    @ApiModelProperty("备用字段2")
    private String standby2;

    /** 备用字段3 */
    @Excel(name = "备用字段3")
    @ApiModelProperty("备用字段3")
    private String standby3;

    /** 备用字段4 */
    @Excel(name = "备用字段4")
    @ApiModelProperty("备用字段4")
    private String standby4;

    /** 备用字段5 */
    @Excel(name = "备用字段5")
    @ApiModelProperty("备用字段5")
    private String standby5;

    /** 备用字段6 */
    @Excel(name = "备用字段6")
    @ApiModelProperty("备用字段6")
    private String standby6;

    /** 备用字段7 */
    @Excel(name = "备用字段7")
    @ApiModelProperty("备用字段7")
    private String standby7;

    /** 备用字段8 */
    @Excel(name = "备用字段8")
    @ApiModelProperty("备用字段8")
    private String standby8;

    /** 备用字段9 */
    @Excel(name = "备用字段9")
    @ApiModelProperty("备用字段9")
    private String standby9;

    /** 备用字段10 */
    @Excel(name = "备用字段10")
    @ApiModelProperty("备用字段10")
    private String standby10;

    /** 审核状态 */
    @Excel(name = "审核状态")
    @ApiModelProperty("审核状态")
    private String checkstatus;

    /** 创建用户ID */
    @TableField(fill = FieldFill.INSERT,value="CREATEUSERID")
    @Excel(name = "创建用户ID")
    @ApiModelProperty("创建用户ID")
    private String createuserid;

    /** 创建用户名 */
    @TableField(fill = FieldFill.INSERT,value="CREATEUSERNAME")
    @Excel(name = "创建用户名")
    @ApiModelProperty("创建用户名")
    private String createusername;

    /** 创建日期 */
    @TableField(fill = FieldFill.INSERT,value="CREATEDATE")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("创建日期")
    private Date createdate;

    /** 最后编辑人id */
    @TableField(fill = FieldFill.UPDATE,value="LASTEDITUSERID")
    @Excel(name = "最后编辑人id")
    @ApiModelProperty("最后编辑人id")
    private String lastedituserid;

    /** 最后编辑人姓名 */
    @TableField(fill = FieldFill.UPDATE,value="LASTEDITUSERNAME")
    @Excel(name = "最后编辑人姓名")
    @ApiModelProperty("最后编辑人姓名")
    private String lasteditusername;

    /** 最后编辑时间 */
    @TableField(fill = FieldFill.UPDATE,value="LASTEDITDATE")
    @Excel(name = "最后编辑时间", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("最后编辑时间")
    private Date lasteditdate;

    /** 审核时间 */
    @Excel(name = "审核时间")
    @ApiModelProperty("审核时间")
    private String checkdate;

    /** 审核人 */
    @Excel(name = "审核人")
    @ApiModelProperty("审核人")
    private String checker;

    /** 课题类型 */
    @Excel(name = "课题类型")
    @ApiModelProperty("课题类型")
    private String levelType;

    /** 项目分类（主分类） */
    @Excel(name = "项目分类", readConverterExp = "主分类")
    @ApiModelProperty("项目分类")
    private String mainProjectTypeCode;

    /** 被委托人编号 */
    @Excel(name = "被委托人编号")
    @ApiModelProperty("被委托人编号")
    private String mandatarycode;

    /** 授权人姓名 */
    @Excel(name = "授权人姓名")
    @ApiModelProperty("授权人姓名")
    private String mandataryname;

    /** 委托开始日期 */
    @Excel(name = "委托开始日期")
    @ApiModelProperty("委托开始日期")
    private String mandatarybegindate;

    /** 委托结束日期 */
    @Excel(name = "委托结束日期")
    @ApiModelProperty("委托结束日期")
    private String mandataryenddate;

    /** 牵头单位 */
    @Excel(name = "牵头单位")
    @ApiModelProperty("牵头单位")
    private String leadUnitName;

    /** 申请代码1 */
    @Excel(name = "申请代码1")
    @ApiModelProperty("申请代码1")
    private String applyCode1;

    /** 申请代码2 */
    @Excel(name = "申请代码2")
    @ApiModelProperty("申请代码2")
    private String applyCode2;

    /** 依托项目名称 */
    @Excel(name = "依托项目名称")
    @ApiModelProperty("依托项目名称")
    private String upItemName;

    /** 依托项目ID */
    @Excel(name = "依托项目ID")
    @ApiModelProperty("依托项目ID")
    private String upItemId;

    /** 授权人ID列表 */
    @Excel(name = "授权人ID列表")
    @ApiModelProperty("授权人ID列表")
    private String authorpids;

    /** 授权单位ID列表 */
    @Excel(name = "授权单位ID列表")
    @ApiModelProperty("授权单位ID列表")
    private String authorunitids;

    /** 数据完善状态 */
    @Excel(name = "数据完善状态")
    @ApiModelProperty("数据完善状态")
    private String completedatastatus;

    /** 社会经济服务目标 */
    @Excel(name = "社会经济服务目标")
    @ApiModelProperty("社会经济服务目标")
    private String societyTarget;

    /** 预算标准ID */
    @Excel(name = "预算标准ID")
    @ApiModelProperty("预算标准ID")
    private String budgetStandardId;

    /** 负责人电话 */
    @Excel(name = "负责人电话")
    @ApiModelProperty("负责人电话")
    private String chargerPhone;

    /** 负责人邮箱 */
    @Excel(name = "负责人邮箱")
    @ApiModelProperty("负责人邮箱")
    private String chargerEmail;

    /** 经办人 */
    @Excel(name = "经办人")
    @ApiModelProperty("经办人")
    private String transactor;

    /** 经办人电话 */
    @Excel(name = "经办人电话")
    @ApiModelProperty("经办人电话")
    private String transactorPhone;

    /** 牵头单位负责人 */
    @Excel(name = "牵头单位负责人")
    @ApiModelProperty("牵头单位负责人")
    private String leadUnitLeader;

    /** 课题性质 */
    @Excel(name = "课题性质")
    @ApiModelProperty("课题性质")
    private String subjectNature;

    /** 依托项目负责人 */
    @Excel(name = "依托项目负责人")
    @ApiModelProperty("依托项目负责人")
    private String relyingProjectLeader;

    /** 依托项目单位名称 */
    @Excel(name = "依托项目单位名称")
    @ApiModelProperty("依托项目单位名称")
    private String relyingProjectUnitName;

    /** 流程id */
    @ApiModelProperty("流程id")
    private String processInstanceId;

    /** 提交类型 */
    @ApiModelProperty("提交类型 -> -3:科研人员最后一页提交，-2:管理员最后一页审核通过，-1:暂存,1:提交,2:保存并通过")
    @TableField(exist = false)
    private Integer submitType;

    /** 流程节点id */
    @ApiModelProperty("流程节点id")
    @TableField(exist = false)
    private String taskId;

    /** 是否当前审批人 */
    @TableField(exist = false)
    private Boolean isAuditor;

}
